#ifndef __ZOMBIESPAWNER_H__
#define __ZOMBIESPAWNER_H__

#include "OpenSteer/Vec3.h"
#include "Human.h"

class ZombieManager;

class ZombieSpawner {

 private:

  // TODO: Dar representación física y gráfica al generador de zombis

  // Atributos Bullet --------------------------------------------------

  //btDiscreteDynamicsWorld* _pWorld;
  //btBoxShape* _pSpawnerShape;

  // Atributos Ogre ----------------------------------------------------

  //Ogre::SceneManager* _pSceneManager;
  //Ogre::SceneNode* _pSpawnerNode;

  // Atributos OpenSteer -----------------------------------------------

  OpenSteer::Vec3 _spawnerPosition; // Posición del generador

  // Otros atributos ---------------------------------------------------

  ZombieManager* _pZombieManager; // Puntero a generador de zombis
  Human* _pHuman; // Puntero al humano
  float _spawnTime; // Tiempo entre generación de zombis
  int _maxZombies; // Número máximo de zombis generados
  int _nZombies; // Número de zombis generados
  float _spawnCounter; // Contador de tiempo para generar zombis

 public:

  // Constructores y destructores --------------------------------------

  ZombieSpawner(OpenSteer::Vec3 position,
                ZombieManager* pZombieManager,
                Human* _pHuman,
                float spawnTime, int maxZombies = 0);
  ~ZombieSpawner();

  // Métodos propios ---------------------------------------------------

  void update(const float currentTime, const float elapsedTime);
  void spawnZombie();
};

#endif
